package routers

import (
	// 如果使用诸如 http.StatusOK 之类的常量
	"net/http"

	"github.com/gin-gonic/gin"
)

// Option 信息
type Option func(*gin.Engine)

var options = []Option{}

// Include 注册app的路由配置
func Include(opts ...Option) {
	options = append(options, opts...)
}

// Init 初始化
func Init() *gin.Engine {
	// 创建一个默认的路由引擎
	// Logger and Recovery middleware 日志与恢复中间件
	r := gin.Default()

	// 当客户端请求对应路由的路径时，会执行后面的匿名函数
	r.GET("/", func(c *gin.Context) {
		c.JSON(http.StatusOK, gin.H{
			"code":    200,
			"message": "hello",
		})
	})

	// 渲染的HTML文件中引用了静态文件时，只需在渲染页面前调用gin.Static方法即可。
	r.Static("/static", "./static")
	// 例如：`<link rel="shortcut icon" href="/static/favicon.ico" type="image/x-icon">`

	for _, opt := range options {
		// 执行每个函数，并传入参数
		opt(r)
	}
	return r
}
